package com.plz.afmt.entity;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 用户表
 * </p>
 *
 * @author jzc
 * @since 2024-10-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_user")
public class UserEntity implements Serializable {


    /**
     * 用户id(主键)
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 手机号
     */
    @TableField("mobile")
    private String mobile;

    /**
     * 普通用户的标识，对当前开发者帐号唯一
     */
    @TableField("wx_openid")
    private String wxOpenid;

    /**
     * 用户统一标识。针对一个微信开放平台帐号下的应用，同一用户的unionid是唯一的
     */
    @TableField("wx_unionId")
    private String wxUnionid;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 最后登录时间
     */
    @TableField("last_login")
    private LocalDateTime lastLogin;

    /**
     * 0:正常状态 1:封禁状态
     */
    @TableField("status")
    private Integer status;

    /**
     * 昵称
     */
    @TableField("nick_name")
    private String nickName;

    /**
     * ip
     */
    @TableField("ip")
    private String ip;

    /**
     * 账号(可以为空但是不能重复)
     */
    @TableField("username")
    private String username;

    /**
     * 真实姓名
     */
    @TableField("real_name")
    private String realName;

    /**
     * 性别
     */
    @TableField("sex")
    private String sex;

    /**
     * 出生日期
     */
    @TableField("birthday")
    private LocalDate birthday;

    /**
     * 会员状态（0、未开通 1、已开通  2、已过期）
     */
    @TableField("vip_status")
    private Integer vipStatus;

    /**
     * 会员开始时间
     */
    @TableField(value = "liberal_time",updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime liberalTime;

    /**
     * 会员结束时间
     */
    @TableField(value = "expired_time",updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime expiredTime;

    /**
     * 企业编号
     */
    @TableField(value = "enterprises_code",updateStrategy = FieldStrategy.IGNORED)
    private String enterprisesCode;
    /**
     * 头像地址
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 会话id
     */
    @TableField("session_id")
    private String sessionId;

    /**
     * 须知（0、未同意   1、同意）
     */
    @TableField("notice")
    private Integer notice;

    public UserEntity(){

    }
    public UserEntity(String nickName, String openid, String avatar) {
        this.nickName = nickName;
        if(StrUtil.isNotBlank(wxOpenid)){
            this.wxOpenid = openid;
        }
        this.avatar = avatar;
        this.createTime = LocalDateTime.now();
        this.lastLogin = LocalDateTime.now();
        this.status = 0;
    }
}
